import * as XLSX from "xlsx";

/**
 * 将Excel文件转换为JSON数据
 * @param {File} raw - 需要解析的Excel文件对象
 * @param {boolean} [isPer] - 可选参数，是否将数值转换为百分比格式（适用于0-1的小数）
 * @returns {Promise<Record<string, any>[]>} 返回Promise，解析结果为工作表数据的JSON数组
 */
export function excelToJson(
  raw: File,
  isPer?: boolean
): Promise<Record<string, any>[]> {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    // 开始读取文件内容
    reader.readAsArrayBuffer(raw);
    reader.onload = (e) => {
      try {
        // 将文件内容读取为ArrayBuffer并解析为workbook对象
        const data = e.target?.result as ArrayBuffer;
        // 第一行开始 第五行结束
        const workbook = XLSX.read(data, { type: "array" });

        // 获取第一个工作表数据并转换为JSON格式
        const sheetName = workbook.SheetNames[0];
        const worksheet = workbook.Sheets[sheetName];

        const jsonData = XLSX.utils.sheet_to_json(worksheet, {
          raw: false, // 保留原始值（字符串）
        }) as Record<string, any>[];

        console.log(jsonData);
        // const jsonData = XLSX.utils.sheet_to_json(worksheet, {
        //   raw: true,
        // }) as Record<string, any>[];
        // 如果启用百分比转换，处理所有数值字段
        // if (isPer) {
        //   jsonData.forEach((row: Record<string, any>) => {
        //     for (const key in row) {
        //       if (typeof row[key] === "number" && row[key] <= 1) {
        //         row[key] = `${(row[key] * 100).toFixed(4)}%`;
        //       }
        //     }
        //   });
        // }

        resolve(jsonData);
      } catch (error) {
        reject(error);
      }
    };

    // 处理文件读取错误
    reader.onerror = (error) => {
      reject(error);
    };
  });
}

export function downloadJson(json: any, name: string) {
  const blob = new Blob([JSON.stringify(json)], { type: "application/json" });
  const url = URL.createObjectURL(blob);
  const link = document.createElement("a");
  link.href = url;
  link.download = name || "data.json";
  link.click();
  URL.revokeObjectURL(url);
  // 保存到当前路劲的file文件内
  // saveAs(blob, name || "data.json");

  return link;
}

export function getJsonDataByFile(fileList: any, index: number = 0) {
  return new Promise((resolve, reject) => {
    if (fileList.value.length === 0) {
      reject("请先上传文件");
    }
    const file = fileList.value[index].raw; // 获取第一个文件的原始文件对象
    if (!file) {
      reject("文件无效");
    }
    const reader = new FileReader();
    reader.onload = (event) => {
      try {
        const jsonContent = JSON.parse(event.target?.result as string); // 解析 JSON 内容
        resolve(jsonContent);
      } catch (error) {
        reject("文件内容无效");
      }
    };
    reader.readAsText(file); // 以文本形式读取文件
  });
}
function saveAs() {
  return new Promise((resolve, reject) => {});
}
